前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

# 三种错误类型

Nuxt3 是全栈框架,代码可能运行在客户端和服务端,因此错误类型可分为以下三种情况:

  • Vue 渲染过程中的错误(包括客户端和服务端);
  • Nitro 引擎内部运行时错误;
  • 服务器和客户端启动错误(包括客户端和服务端)。

# Vue 渲染过程中的错误

视图层是通过 Vue 实现的,因此不管是 SSR,还是 SPA 在渲染过程中的错误,都可以在 Vue 层面处理,当然也可以等错误传播到顶层时通过 Nuxt 提供的生命周期钩子处理。

# 利用 Vue 选项处理错误

首先看一下 Vue 层面的处理方法:onErrorCaptured,这是 Vue 实例提供的全局配置选项,可以这样配置:

ini
复制代码app.config.errorHandler = (error, context) => {}
@前端进阶之旅: 代码已经复制到剪贴板

现在的问题是如何获得 Vue 实例,方法是通过 Nuxt 提供的插件机制获取:

javascript
复制代码export default defineNuxtPlugin((nuxtApp) => {
  // 通过 nuxtApp.vueApp 获取 Vue 实例
  nuxtApp.vueApp.config.errorHandler = (error, context) => {
    // ...
  }
})
@前端进阶之旅: 代码已经复制到剪贴板

关于 Nuxt 插件机制,我们在后续章节会详细介绍

下面我们在个人博客范例中添加错误捕获功能,创建 ~/plugins/error.ts:

javascript
复制代码export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.config.errorHandler = (..._args) => {
    console.log('vue error handler')
  }
})
@前端进阶之旅: 代码已经复制到剪贴板

测试效果:这里访问了一个不存在的变量:

img

img

# 利用 Nuxt 钩子处理错误

还有一种处理方式,是利用 Nuxt 层级的钩子捕获来自 Vue 传播上来的错误。可用的钩子有两个:

  • app:error:整个应用层面的错误捕获;
  • vue:error:仅 Vue 层面的错误捕获。

添加两个钩子app:error, vue:error,plugins/error.ts。

javascript
复制代码export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.hook(
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏